/**
 * 自定义钩子用于获取通用代码列表
 * @param {Array} typeList 通用代码的类型列表
 * @returns {Object} 返回包含通用代码列表的引用
 */
export function useLookup(typeList: Array<string>) {
  // 获取当前组件的实例
  const { proxy } = getCurrentInstance();
  // 初始化 lookup 参数数组
  const lookupParams = [];
  // 初始化 lookup 列表引用
  const lookupList = ref<any>();

  // 如果 typeList 存在，则遍历 typeList 初始化 lookupParams 和 lookupList
  if (typeList) {
    typeList.forEach((item) => {
      lookupParams.push({
        fieldName: item,
        lookUpType: item
      });
      lookupList[item] = [];
    });
    // 调用获取通用代码列表的方法
    getLookupList();
  }

  /** 获取通用代码  */
  function getLookupList() {
    // 调用代理的方法获取通用代码列表，并更新 lookupList 的值
    lookupList.value = proxy.$getLookupByType(lookupParams, (result) => {
      lookupList.value = result;
    });
  }

  // 返回 lookupList 引用
  return { lookupList };
}
